package com.atguigu.tingshu.order.hander;

import com.alibaba.fastjson.JSON;
import com.atguigu.tingshu.common.constant.RedisConstant;
import com.atguigu.tingshu.common.constant.SystemConstant;
import com.atguigu.tingshu.order.helper.SignHelper;
import com.atguigu.tingshu.vo.order.OrderInfoVo;
import org.springframework.data.redis.core.RedisTemplate;

import java.util.Map;
import java.util.UUID;
import java.util.concurrent.TimeUnit;

public class OrderTradeNoHandler {

    public void orderTradeNoHandle(OrderInfoVo orderInfoVo , RedisTemplate<String , String> redisTemplate) {

        // 构建其他的数据

        // 做防止表单重复提交 <1>交易号 并把其放到redis里
        String tradeNo = UUID.randomUUID().toString().replace("-", "");
        String redisKey = RedisConstant.ORDER_TRADE_NO + tradeNo ;
        redisTemplate.opsForValue().set(redisKey , tradeNo , 5 , TimeUnit.MINUTES);
        orderInfoVo.setTradeNo(tradeNo);
        // <2>支付方式：1101-微信 1102-支付宝 1103-账户余额
        orderInfoVo.setPayWay(SystemConstant.ORDER_PAY_WAY_WEIXIN);
        // <9>时间戳
        // 设置当前系统时间作为数据生成时间
        orderInfoVo.setTimestamp(SignHelper.getTimestamp());
        // <10>签名
        Map<String , Object> map = JSON.parseObject(JSON.toJSONString(orderInfoVo), Map.class);
        String sign = SignHelper.getSign(map);
        // 为生成订单做数据的合法性的校验
        orderInfoVo.setSign(sign);
    }

}